package clases;

import java.awt.Component;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;

import java.awt.Graphics;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JPanel;
import javax.xml.transform.Result;

public class Ventana extends javax.swing.JFrame {

    boolean admin = false;
    Connection conector;

    IProveedores pProveedores = new IProveedores(this);
    IEmpleado pEmpleado = new IEmpleado(this);
    IClientes pClientes = new IClientes(this);
    IGerente pGerente = new IGerente(this);
    //  ventanaLogin vl = new ventanaLogin(conector, this, users);
    ArrayList<String> users = new ArrayList();
    ArrayList<JPanel> paneles = new ArrayList();
    Statement stmt;
    ResultSet result;
    ventanaLogin vl = new ventanaLogin(conector, this, users);
    //****** PANEL PARA NUEVOS *** *

    PnuevoProveedor pnProveedor = new PnuevoProveedor(this);
    PnuevoProducto pnProducto = new PnuevoProducto(this);
    PnuevoPago pnPago = new PnuevoPago(this);
    PnuevoEmpleado pnEmpleado = new PnuevoEmpleado(this);
    PnuevoCredito pnCredito = new PnuevoCredito(this);
    PnuevoCliente pnCliente = new PnuevoCliente(this);

    //*********venta***************
    PanelPedidosPendientes ppPendiendtes = new PanelPedidosPendientes();

    public Ventana() throws InstantiationException, IllegalAccessException, SQLException, ClassNotFoundException {

        initComponents();

        vl.setVisible(true);
        vl.setSize(630, 360);
        this.setSize(1000, 700);

        pnProducto.setVisible(false);
        pnCliente.setVisible(false);
        pnPago.setVisible(false);
        pnProveedor.setVisible(false);
        pnCredito.setVisible(false);
        pnEmpleado.setVisible(false);
        this.add(pnEmpleado);
        this.add(pnCredito);
        this.add(pnProducto);
        this.add(pnCliente);
        this.add(pnPago);
        this.add(pnProveedor);

        this.add(pProveedores);
        this.pProveedores.setVisible(false);

        users.add("gerente");
        users.add("empleado");

        pGerente.setVisible(false);
        this.add(pGerente);
        //this.pGerente.setBounds(0, 0, 1000, 500);

        pEmpleado.setVisible(false);
        this.add(pEmpleado);
        //this.pEmpleado.setBounds(0, 0, 1000, 500);

        pClientes.setVisible(false);

        this.add(pClientes);
      //  this.pClientes.setBounds(10, 10, 1050, 550);
        // this.setVisible(true);
        //************************conexion pruepa       DELETE!!
        //  Class.forName("com.mysql.jdbc.Driver").newInstance();
        //    conector =  DriverManager.getConnection("jdbc:mysql://localhost/compu_system","gerente", "gerente");

        //     setStatement("compu_System");
    }

    void setPanelGerencia() {
        this.pGerente.setVisible(true);
        this.pGerente.setEnabled(true);

    }

    void setPanelEmpleado() {
        pEmpleado.setVisible(true);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jButton4 = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jSeparator1 = new javax.swing.JPopupMenu.Separator();
        jMenuItem8 = new javax.swing.JMenuItem();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();
        jMenuItem3 = new javax.swing.JMenuItem();
        jMenuItem5 = new javax.swing.JMenuItem();
        jMenuItem6 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem9 = new javax.swing.JMenuItem();
        jMenuItem4 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setBackground(new java.awt.Color(170, 198, 210));

        jButton4.setText("TERMINAR SESION");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });

        jMenu1.setText("New");
        jMenu1.add(jSeparator1);

        jMenuItem8.setText("Pago");
        jMenuItem8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem8ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem8);

        jMenuItem1.setText("Credito");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuItem2.setText("Cliente");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem2);

        jMenuItem3.setText("Empleado");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem3ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem3);

        jMenuItem5.setText("Proveedor");
        jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem5ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem5);

        jMenuItem6.setText("Producto");
        jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem6ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem6);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("View");

        jMenuItem9.setText("Clientes");
        jMenuItem9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem9ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem9);

        jMenuItem4.setText("proveedores");
        jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem4ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem4);

        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(33, 33, 33)
                .addComponent(jButton4)
                .addContainerGap(541, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(490, Short.MAX_VALUE)
                .addComponent(jButton4)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
        // TODO add your handling c
        this.pGerente.setVisible(false);
        this.pGerente.setEnabled(false);

        this.pnCliente.setVisible(true);
        this.pnCliente.setEnabled(true);

        this.pnCliente.setBounds(0, 0, 500, 500);
        this.pnCliente.setStatement(stmt);
        this.setSize(500, 500);
    }//GEN-LAST:event_jMenuItem2ActionPerformed

    private void jMenuItem9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem9ActionPerformed
        // TODO add your handling code here:
        this.pGerente.setVisible(false);
        this.pGerente.setEnabled(false);

        this.pClientes.setVisible(true);
        this.pClientes.setEnabled(true);

        this.pClientes.setBounds(0, 0, 700, 500);
        this.pClientes.setStatement(stmt);
        this.setSize(700, 500);


    }//GEN-LAST:event_jMenuItem9ActionPerformed

    private void jMenuItem8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem8ActionPerformed
        // TODO add your handling code here:

        if (admin) {

            this.pGerente.setVisible(false);
            this.pGerente.setEnabled(false);

        } else {
            this.pEmpleado.setVisible(false);
            this.pEmpleado.setEnabled(false);
        }

        this.pnPago.setVisible(true);
        this.pnPago.setEnabled(true);

        this.pnPago.setBounds(0, 0, 500, 500);
        this.pnPago.setStatement(stmt);

        this.setSize(500, 500);

    }//GEN-LAST:event_jMenuItem8ActionPerformed

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
        // TODO add your handling code here:

        if (admin) {

            this.pGerente.setVisible(false);
            this.pGerente.setEnabled(false);

        } else {
            this.pEmpleado.setVisible(false);
            this.pEmpleado.setEnabled(false);
        }

        this.pnCredito.setVisible(true);
        this.pnCredito.setEnabled(true);

        this.pnCredito.setBounds(0, 0, 500, 500);
        this.pnCredito.setStatement(stmt);
        this.setSize(500, 500);


    }//GEN-LAST:event_jMenuItem1ActionPerformed

    private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
        // TODO add your handling code here:
        this.pGerente.setVisible(false);
        this.pGerente.setEnabled(false);

        this.pnEmpleado.setVisible(true);
        this.pnEmpleado.setEnabled(true);

        this.pnEmpleado.setBounds(0, 0, 500, 500);

        this.pnEmpleado.setStatement(stmt);
        this.setSize(500, 500);

    }//GEN-LAST:event_jMenuItem3ActionPerformed

    private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem5ActionPerformed
        // TODO add your handling code here:

        ///this.remove(pGerente);
        this.pGerente.setVisible(false);
        this.pGerente.setEnabled(false);
        // PnuevoProveedor nuevo = new PnuevoProveedor(stmt,this);
        // nuevo.setEnabled(true);
        // nuevo.setVisible(true);
        this.pnProveedor.setVisible(true);
        this.pnProveedor.setEnabled(true);
        this.pnProveedor.setBounds(0, 0, 500, 400);

        this.pnProveedor.setStatement(stmt);

        this.setSize(500, 400);
        //  repaint(); 
    }//GEN-LAST:event_jMenuItem5ActionPerformed

    private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed
        // TODO add your handling code here:

        this.pGerente.setVisible(false);
        this.pGerente.setEnabled(false);

        this.pProveedores.setVisible(true);
        this.pProveedores.setEnabled(true);

        this.pProveedores.setBounds(0, 0, 700, 500);
        this.pProveedores.setStatement(stmt);

        this.setSize(700, 500);


    }//GEN-LAST:event_jMenuItem4ActionPerformed

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
        try {
            // TODO add your handling code here:

        

            if (admin) {

                this.pGerente.setVisible(false);
                this.pGerente.setEnabled(false);
            } else {
                this.pEmpleado.setVisible(false);
                this.pEmpleado.setEnabled(false);
            }

            // stmt.execute("quit");
            stmt.close();
            conector.close();

            this.setVisible(false);
            vl.setVisible(true);
            admin = false;

            // conector.close();
        } catch (SQLException ex) {
            Logger.getLogger(IGerente.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_jButton4ActionPerformed

    private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem6ActionPerformed
        // TODO add your handling code here:
        if (admin) {
            this.pGerente.setVisible(false);
            this.pGerente.setEnabled(false);

        } else {

            this.pEmpleado.setVisible(false);
            this.pEmpleado.setEnabled(false);
        }

        this.pnProducto.setVisible(true);
        this.pnProducto.setEnabled(true);
        this.pnProducto.setBounds(0, 0, 700, 500);

        this.pnProducto.setStatement(stmt);
        this.setSize(700, 500);
    }//GEN-LAST:event_jMenuItem6ActionPerformed

    public static void main(String args[]) throws InstantiationException, IllegalAccessException, SQLException, ClassNotFoundException {

        Ventana v = new Ventana();
        v.setDefaultCloseOperation(Ventana.EXIT_ON_CLOSE);
        // v.setSize(900,600);

    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton4;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JMenuItem jMenuItem4;
    private javax.swing.JMenuItem jMenuItem5;
    private javax.swing.JMenuItem jMenuItem6;
    private javax.swing.JMenuItem jMenuItem8;
    private javax.swing.JMenuItem jMenuItem9;
    private javax.swing.JPopupMenu.Separator jSeparator1;
    // End of variables declaration//GEN-END:variables

    void setStatement(String bd, Statement st) {
        try {
            stmt = st;
            System.out.println("Conected by stmt");
            stmt.execute("use " + bd);

            if (admin) {
                pGerente.setStatement(stmt);
            } else {
                this.pEmpleado.setStatement(stmt);
                // this.pEmpleado.setVisible(true);
                //   this.pEmpleado.setEnabled(true);
                //  this.pnEmpleado.setBounds(0, 0, 700, 500);

            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());

        }

    }

    void setResultSet() {
    }

    void desactiveMenu() {

        //jMenu1.getItem(0).setVisible(false);
        jMenu1.getItem(3).setVisible(false);
        jMenu1.getItem(4).setVisible(false);
        jMenu1.getItem(5).setVisible(false);

        jMenu2.getItem(0).setVisible(false);
        jMenu2.getItem(1).setVisible(false);

    }

    void activeMenu() {

        jMenu1.getItem(3).setVisible(true);
        jMenu1.getItem(4).setVisible(true);
        jMenu1.getItem(5).setVisible(true);

        jMenu2.getItem(0).setVisible(true);
        jMenu2.getItem(1).setVisible(true);
    }

    void setConnection(Connection connection) {

        conector = connection;
    }

}
